home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.Reader;
- import java.util.Enumeration;
- import java.util.Vector;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import org.xml.sax.InputSource;
- import org.xml.sax.Parser;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.ParserFactory;
-
- public final class SchemaUtilities {
- public static boolean sameFlavor(SchemaFlavorIntf var0, URI var1, boolean var2) {
- String var3 = getFlavor(var1, var2);
- if (var3 == null) {
- return true;
- } else {
- return var0.getFlavorName().equals(var3);
- }
- }
-
- public static boolean compatibleFlavor(SchemaFlavorIntf var0, URI var1, boolean var2) {
- if (sameFlavor(var0, var1, var2)) {
- return true;
- } else {
- String var3 = getFlavor(var1, var2);
- return FlavorRegistry.getDefaultRegistry().isCompatible(var0.getFlavorName(), var3);
- }
- }
-
- public static boolean isValidFlavor(String var0) {
- return var0 != null && var0 != BaseFlavor.FLAVOR_UNDETERMINED && var0 != BaseFlavor.FLAVOR_INVALID;
- }
-
- public static String getFlavor(URI var0, boolean var1) {
- int var2 = var0.getShortName().lastIndexOf(46);
- String var3 = var2 >= 0 ? var0.getShortName().substring(var2 + 1) : "";
- if ((!var1 || !var3.equals("xsd")) && FlavorRegistry.getDefaultRegistry().flavorExists(var3)) {
- return var3;
- } else if (!var1) {
- return BaseFlavor.FLAVOR_UNDETERMINED;
- } else {
- try {
- String var4 = getFlavorPeek(var0);
- return var4;
- } catch (IOException var6) {
- String var5 = BaseFlavor.FLAVOR_UNDETERMINED;
- return var5;
- }
- }
- }
-
- public static String getFlavorPeek(URI var0) throws IOException {
- SchemaFlavorPeekHandler var1 = new SchemaFlavorPeekHandler(var0);
- Reader var3 = null;
-
- String var4;
- try {
- Parser var2 = getParser();
- var2.setEntityResolver(var1);
- var2.setDocumentHandler(var1);
- var3 = var0.createReader();
- if (var3 != null) {
- InputSource var17 = new InputSource(var3);
- var17.setSystemId(var0.getFullName());
- var2.parse(var17);
- return var1.getFlavor();
- }
-
- var4 = BaseFlavor.FLAVOR_INVALID;
- } catch (SAXException var15) {
- return var1.getFlavor();
- } finally {
- try {
- if (var3 != null) {
- var3.close();
- }
- } catch (IOException var14) {
- }
-
- }
-
- return var4;
- }
-
- public static ExportInterface getWriter(SchemaIntf var0, String var1) {
- if (var1.equals(DTDFlavor.NAME)) {
- return new DTDBridgeWriter(var0);
- } else if (var1.equals("xsd")) {
- return new XSDLWriter(var0);
- } else if (var1.equals(XDRFlavor.NAME)) {
- return new XDRWriter(var0);
- } else if (var1.equals(DTDMLFlavor.NAME)) {
- return new DTDMLWriter(var0);
- } else if (var1.equals(RELAXFlavor.NAME)) {
- return new RELAXWriter(var0);
- } else if (var1.equals(BIZFlavor.NAME)) {
- return new BIZWriter(var0);
- } else if (var1.equals(OSCFlavor.NAME)) {
- return new XDRWriter(var0);
- } else if (var1.equals(MSSFlavor.NAME)) {
- return new XDRWriter(var0);
- } else if (var1.equals(SOX2Flavor.NAME)) {
- return new SOX2Writer(var0);
- } else if (var1.equals(DCDFlavor.NAME)) {
- return new DCDWriter(var0);
- } else if (var1.equals(DDMLFlavor.NAME)) {
- return new DDMLWriter(var0);
- } else {
- return !var1.equals(FlavorRegistry.getDefaultRegistry().getNamedBaseFlavor(var1)) ? getWriter(var0, FlavorRegistry.getDefaultRegistry().getNamedBaseFlavor(var1)) : null;
- }
- }
-
- public static Parser getParser() {
- try {
- Parser var6 = ParserFactory.makeParser("com.ibm.xml.parsers.SAXParser");
- return var6;
- } catch (Exception var5) {
- SAXParserFactory var0 = SAXParserFactory.newInstance();
- var0.setValidating(false);
-
- try {
- SAXParser var1 = var0.newSAXParser();
- Parser var8 = var1.getParser();
- return var8;
- } catch (SAXException var3) {
- Object var7 = null;
- return (Parser)var7;
- } catch (ParserConfigurationException var4) {
- Object var2 = null;
- return (Parser)var2;
- }
- }
- }
-
- public static String[] getExtensions() {
- return FlavorRegistry.getDefaultRegistry().getFlavorNames();
- }
-
- public static String flavorConvertsTo(String var0) {
- if (var0 == null) {
- return null;
- } else {
- return !var0.equals("xsd.1999.05.06") && !var0.equals("xsd.1999.12.17") ? var0 : "xsd";
- }
- }
-
- public static Vector getRootCandidates(SchemaIntf var0) {
- Vector var1 = new Vector();
- Vector var2 = new Vector();
- if (var0 != null) {
- Enumeration var3 = var0.getElementDeclarations();
-
- while(var3.hasMoreElements()) {
- ElementDeclaration var4 = (ElementDeclaration)var3.nextElement();
- String var5 = ((BaseDeclaration)var4).getName();
- if (var1.indexOf(var5) < 0) {
- var2.addElement(var5);
- }
-
- ContentModelTermEnum var6 = var4.getContentModel().getLeafTerms();
-
- while(var6.hasMoreElements()) {
- ContentModelTerm var7 = (ContentModelTerm)var6.nextElement();
- String var8 = var7.getNCName();
- if (var2.indexOf(var8) >= 0) {
- var2.removeElement(var8);
- }
-
- if (var1.indexOf(var8) < 0) {
- var1.addElement(var8);
- }
- }
- }
- }
-
- return var2;
- }
-
- protected static int getRootScore(SchemaIntf var0, String var1) {
- ElementDeclaration var2 = var0.getNamedElement(var1);
- ContentModelTermEnum var3 = var2.getContentModel().getLeafTerms();
-
- int var4;
- for(var4 = 0; var3.hasMoreElements(); ++var4) {
- var3.nextElement();
- }
-
- return var4;
- }
-
- public static String getBestRootName(SchemaIntf var0) {
- String var1 = null;
- if (var0 != null) {
- Vector var2 = getRootCandidates(var0);
- if (var2.size() == 0) {
- Enumeration var3 = var0.getElementDeclarations();
- if (var3.hasMoreElements()) {
- ElementDeclaration var4 = (ElementDeclaration)var3.nextElement();
- var1 = ((BaseDeclaration)var4).getName();
- }
- } else if (var2.size() == 1) {
- var1 = (String)var2.elementAt(0);
- } else {
- int var6 = -1;
-
- for(int var7 = 0; var7 < var2.size(); ++var7) {
- int var5 = getRootScore(var0, (String)var2.elementAt(var7));
- if (var1 == null || var5 > var6) {
- var6 = var5;
- var1 = (String)var2.elementAt(var7);
- }
- }
- }
- }
-
- return var1;
- }
-
- public static String getInternalSubset(URI var0) {
- try {
- BufferedReader var1 = new BufferedReader(var0.createReader());
- int var2 = -1;
- int var3 = -1;
- int var4 = -1;
- StringBuffer var5 = new StringBuffer();
-
- while(true) {
- String var6 = var1.readLine();
- if (var6 == null) {
- break;
- }
-
- if (var2 == -1) {
- var2 = var6.indexOf("<!DOCTYPE");
- }
-
- if (var2 >= 0 && var3 == -1 && var4 == -1) {
- var3 = var6.indexOf("SYSTEM");
- }
-
- if (var3 >= 0 && var4 == -1) {
- int var14 = var6.indexOf("\"");
- int var15 = var6.indexOf("\"", var14 + 1);
- int var9 = var6.indexOf("'");
- int var10 = var6.indexOf("'", var9 + 1);
- if (var9 != -1 && (var14 == -1 || var9 < var14)) {
- var15 = var10;
- }
-
- if (var15 >= 0) {
- var3 = var15;
- }
-
- var4 = var6.indexOf("[", var3 + 1);
- if (var4 >= 0) {
- var5.append(var6.substring(var4 + 1));
- var5.append(System.getProperty("line.separator"));
- } else {
- if (var6.indexOf("<", var3 + 1) >= 0) {
- Object var11 = null;
- return (String)var11;
- }
-
- var3 = 0;
- }
- } else if (var4 == -1 && (var4 = var6.indexOf("[", var3 + 1)) >= 0) {
- var5.append(var6.substring(var4 + 1));
- var5.append(System.getProperty("line.separator"));
- } else if (var6.indexOf("<!") < 0 && var6.indexOf("<?") < 0) {
- if (var6.indexOf("<") >= 0) {
- String var7 = var5.toString();
- int var8 = var7.lastIndexOf("]");
- if (var8 == -1) {
- var7 = null;
- } else {
- var7 = var7.substring(0, var8);
- }
-
- return var7;
- }
-
- if (var4 >= 0) {
- var5.append(var6);
- var5.append(System.getProperty("line.separator"));
- }
- } else if (var4 >= 0) {
- var5.append(var6);
- var5.append(System.getProperty("line.separator"));
- }
- }
- } catch (IOException var12) {
- }
-
- return null;
- }
-
- public static URI getExternalDTD(URI var0) {
- try {
- BufferedReader var1 = new BufferedReader(var0.createReader());
- int var2 = -1;
- int var3 = -1;
-
- while(true) {
- String var4 = var1.readLine();
- if (var4 == null) {
- break;
- }
-
- if (var2 == -1) {
- var2 = var4.indexOf("<!DOCTYPE");
- }
-
- if (var2 >= 0 && var3 == -1) {
- var3 = var4.indexOf("SYSTEM");
- }
-
- if (var3 >= 0) {
- int var5 = var4.indexOf("\"");
- int var6 = var4.indexOf("\"", var5 + 1);
- int var7 = var4.indexOf("'");
- int var8 = var4.indexOf("'", var7 + 1);
- if (var7 != -1 && (var5 == -1 || var7 < var5)) {
- var5 = var7;
- var6 = var8;
- }
-
- if (var5 >= 0 && var6 >= 0) {
- String var9 = var4.substring(var5 + 1, var6);
- if (var9.equals("")) {
- URI var15 = URI.makeStringURI("");
- return var15;
- }
-
- if (var0.getScheme().equals(":xa-string")) {
- if (var0.getBaseURI() != null) {
- URI var14 = new URI(var0.getBaseURI(), var9);
- return var14;
- }
-
- Object var13 = null;
- return (URI)var13;
- }
-
- URI var10 = new URI(var0, var9);
- return var10;
- }
- } else if (var4.indexOf("<!") < 0 && var4.indexOf("<?") < 0 && var4.indexOf("<") >= 0) {
- Object var12 = null;
- return (URI)var12;
- }
- }
- } catch (IOException var11) {
- }
-
- return null;
- }
-
- public static URI getSchemaNamespaceURI(SchemaIntf var0) {
- URI var1 = var0.getNamespace();
- if (var1 == null) {
- var1 = var0.getURI();
- }
-
- return var1;
- }
-
- public static String getSchemaNamespace(SchemaIntf var0) {
- return getSchemaNamespaceURI(var0).getFullName();
- }
- }
-